#pragma once
#include<iostream>
#include<sys/types.h>
#include<sys/socket.h>
#include<sys/un.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <cstring>
#include<unistd.h>

class InetAddr{
    public:
        InetAddr(const struct sockaddr_in& addr):_addr(addr){
            _port=ntohs(addr.sin_port);
            _ip=inet_ntoa(addr.sin_addr);

        }
        InetAddr(){
        }
        void SetAddr(const struct sockaddr_in& addr){
            _port=ntohs(addr.sin_port);
            _ip=inet_ntoa(addr.sin_addr);
        }
        
        std::string Ip() {
            return _ip;
        }
        uint16_t Port() {
            return _port;
        }
        std::string PrintDebug(){
            std::string info = _ip;
            info += ":";
            info += std::to_string(_port); // "127.0.0.1:4444"
            return info;
        }
    private:
        uint16_t _port;
        std::string _ip;
        struct sockaddr_in _addr;
};